
const {ccclass, property} = cc._decorator;

//人物跑动状态
enum CharacterMoveState{
    //站立状态
    STAND,
    //移动状态
    MOVE,
    //跳跃状态
    JUMP,
    //趴下状态
    LAYDOWN,
    //死亡状态
    DIE
}

//瞄准方向
enum CharacterAimDirectionState{
    //上
    AIM_UP,
    //斜上
    AIM_UP_SLANT,
    //水平
    AIM_HORIZON,
    //斜下
    AIM_DOWN_SLANT,
    //向下(较特殊，只有在跳跃时按下才能触发)
    AIM_DOWN
}

@ccclass
export default class CharacterBase extends cc.Component {

    /**
     * 人物移动序列帧
     * 
     * 0.站立动画
     * 1.斜上射击
     * 2.水平射击
     * 3.斜下射击
     * 4.普通奔跑
     * 5.跳跃
     * 6.非跳跃的下落动画（比如直接从悬崖上走下去)
     * 7.趴下
     * 
     * 特别要注意的是 由于在平地移动时分为向斜上/水平/斜下开火 并且可随意切换
     * 所以在平地切换CharacterAimDirectionState的时候要先记录当前为第几帧
     * 切换为新动画后设置为当前的帧数
     */
    @property(cc.Animation)
    charaAnimation:cc.Animation = null;

    nameArray:string[] = [];

    start () {
        //初始化序列帧clip名字数组
        let clips = this.charaAnimation.getClips();

        if(!clips || clips.length < 8){
            //动作数组出问题了
            cc.log("ERROR! Here's something wrong with clips array");
        }

        if(clips){
            clips.forEach( (value: cc.AnimationClip, index: number, array: cc.AnimationClip[]) =>{
                this.nameArray.push(value.name);
            },this);
        }
    }

    changeMoveState(state:CharacterMoveState){

    }

    changeAnimState(state:CharacterAimDirectionState){

    }
}
